/*****************************************************************************************************
** 文件名: 		AT_Driver.h
** 版本：  		1.0
** 工作环境: 	RealView MDK-ARM 5.11
** 作者: 		盖书永
** 生成日期: 	2015年1月15日13:52:17
** 功能:		AT服务驱动
** 相关文件:					
** 修改日志：	 
*****************************************************************************************************/
#ifndef _AT_DRIVER_H_
#define _AT_DRIVER_H_

extern const char *CARD_STATUS[3];
extern const char *NET_REG[3] ;
extern const char *OPERATOR[3];
extern const char *SIGNAL_Q[4];

typedef struct{ 
	unsigned char gsm_equipment;		
	unsigned char status;	
	unsigned char card;
	unsigned char net_reg;
	unsigned char Operator;
	unsigned char signal_quality;
	unsigned char rssi;
	unsigned char ber;
	unsigned char gprs_reg;	
	unsigned char attach;
	unsigned char cstt;	
	unsigned char ciicr;
	char		  sms_center_num[15];
	char		  local_ip[16];
	float		  balance;
} AT_StateInfo_Def;			
extern AT_StateInfo_Def 	AT_StateInfo;	//设备状态信息

/**********************************************************************************************************
* 函数名称： void SIM800_OFF(void)
* 函数说明： SIM800关机
* 输入参数： 无
* 返回参数： 无
**********************************************************************************************************/
void SIM800_OFF(void);

/**********************************************************************************************************
* 函数名称： int AT_Module_Init(void)
* 函数说明： AT模块初始化
* 输入参数： 无
* 返回参数： 返回0成功，1失败
**********************************************************************************************************/
int AT_Module_Init(void);

/**********************************************************************************************************
* 函数名称： int AT_Module_Status_Check(void)
* 函数说明： AT模块状态检查
* 输入参数： 无
* 返回参数： 返回0成功，1失败
**********************************************************************************************************/
int AT_Module_Status_Check(void);

/**********************************************************************************************************
* 函数名称： void GPRS_TCP_Connect(void)
* 函数说明： 建立GPRS TCP 连接
* 输入参数： 无
* 返回参数： 无
**********************************************************************************************************/
int GPRS_TCP_Connect(void);

/**********************************************************************************************************
* 函数名称： int GPRS_TCP_Send_Data(unsigned char *data)
* 函数说明： GPRS TCP 数据发送
* 输入参数： 无
* 返回参数： 返回1，发送成功，返回0，发送失败
**********************************************************************************************************/
int GPRS_TCP_Send_Data(unsigned char *data, unsigned int size);

/**********************************************************************************************************
* 函数名称： int GPRS_TCP_Close(void)
* 函数说明： GPRS TCP 关闭连接
* 输入参数： 无
* 返回参数： 返回1,关闭成功； 返回0，关闭失败
**********************************************************************************************************/
int GPRS_TCP_Close(void);

/**********************************************************************************************************
* 函数名称： int AT_Module_Send_One_SMS(char* num, unsigned char pdu_type, char *sms, unsigned char sms_len)
* 函数说明： AT设备单条短信发送
* 输入参数： 短信号码， 长短信（0x51）和短短信(0x11)类型，unicode编码短信内容， 短信长度
* 返回参数： 返回1发送成功，返回0发送失败
**********************************************************************************************************/
int AT_Module_Send_One_SMS(char* num, unsigned char pdu_type, char *sms, unsigned char sms_len);

/**********************************************************************************************************
* 函数名称： int AT_Module_Send_More_SMS(char* num, char *sms, unsigned int sms_len)
* 函数说明： 多条短信发送
* 输入参数： 短信号码， unicode编码短信内容， 短信长度
* 返回参数： 返回1发送成功，返回0发送失败
**********************************************************************************************************/
int AT_Module_Send_More_SMS(char* num, char *sms, unsigned int sms_len);

/**********************************************************************************************************
* 函数名称： int AT_Module_Query_Read_SMS(char *num, char *sms, int *sms_len)
* 函数说明： AT设备查询短信如果收到短信解析短信内容。
* 输入参数： 短信号码， 短信内容空间， 短信字节数
* 返回参数： 返回1发送成功，返回0发送失败
**********************************************************************************************************/
int AT_Module_Query_Read_SMS(char *num, char *sms, int *sms_len);

//------------------------------------------------电话服务---------------------------------------------------

/**********************************************************************************************************
* 函数名称： int AT_Module_Call(char* Number, char dtmf_enable)
* 函数说明： 拨打电话
* 输入参数： 电话号码, DTMF使能：0-禁止，1-启用
* 返回参数： 返回1电话接通，返回0电话无法接通
**********************************************************************************************************/
int AT_Module_Call(char *Number, char dtmf_enable);

/**********************************************************************************************************
* 函数名称： int AT_Module_Query_Answer_Phone(void)
* 函数说明： 查询是否有电话呼叫并接听电话
* 输入参数： 无
* 返回参数： 返回1已经接通，返回0无电话呼叫
**********************************************************************************************************/
int AT_Module_Query_Answer_Phone(void);

/**********************************************************************************************************
* 函数名称： void AT_Module_Hang_Up_Phone(void)
* 函数说明： 挂断电话
* 输入参数： 无
* 返回参数： 无
**********************************************************************************************************/
void AT_Module_Hang_Up_Phone(void);

/**********************************************************************************************************
* 函数名称： int AT_Module_Get_Call_State(void)
* 函数说明： 获取通话状态
* 输入参数： 无
* 返回参数： 返回0空闲状态，1振铃状态，2通话状态，3未知
**********************************************************************************************************/
int AT_Module_Get_Call_State(void);

/**********************************************************************************************************
* 函数名称： char AT_Module_DTMF_Decoder(void)
* 函数说明： 查询并DTMF解码
* 输入参数： 无
* 返回参数： 成功返回按键值，失败返回0
**********************************************************************************************************/
char AT_Module_DTMF_Decoder(void);

/**********************************************************************************************************
* 函数名称： int AT_Module_FTP_Update(char *filepath, char *filename, char *verdate)
* 函数说明： FTP升级
* 输入参数： 升级FTP文件路径，升级文件名，升级文件版本日期
* 返回参数： 成功返回1，失败返回0
**********************************************************************************************************/
int AT_Module_FTP_Update(char *filepath, char *filename, char *verdate);

/**********************************************************************************************************
* 函数名称： int AT_Module_Http_Post(char* data, int size)
* 函数说明： HTTP POST提交数据
* 输入参数： 数据缓存区指针， 发送数据的大小
* 返回参数： 成功返回1，失败返回0
**********************************************************************************************************/
int AT_Module_Http_Post(char* data, int size);

/**********************************************************************************************************
* 函数名称： int AT_Module_Http_READ(char *data, int size, char** buf)
* 函数说明： 读取HTTP 求情返回的数据
* 输入参数： 数据缓存区指针, 缓存区大小，输出数据缓存区指针
* 返回参数： 返回接收数据长度
**********************************************************************************************************/
int AT_Module_Http_READ(char *data, int size, char** buf);

#endif
